package Pattern.TemplatePattern.pasta;

public abstract class PastaDish {
    public final void makeRecipe() {
        boilWater();
        cookPasta();
        drainAndPlate();
        addPasta();
        addSauce();
        addProtein();
        addGarnish();
    }

    protected abstract void addGarnish();

    protected abstract void addProtein();

    protected abstract void addSauce();

    protected abstract void addPasta();

    private void drainAndPlate() {System.out.println("Drain and plate");}

    private void boilWater() {System.out.println("Boiling water");}

    private void cookPasta() {System.out.println("Cooking pasta");}
}
